class Solution:
    def canJump(self, nums):
        n = len(nums)
        if n <= 1:
            return True

        # 记录从右向左遍历过程中能到达终点的最小位置
        last_pos = n - 1

        # 从倒数第二个位置向左遍历
        for i in range(n - 2, -1, -1):
            # 如果当前位置能跳到last_pos，则更新last_pos为当前位置
            if i + nums[i] >= last_pos:
                last_pos = i

        # 如果最终last_pos为0，说明可以从起点到达终点
        return last_pos == 0